1. Spark 环境安装

安装 Spark 的环境。涉及安装 JDK,Scala,Maven,Python3。搭建 Hadoop,Spark等。

安装 JDK

1
tar -zxvf jdk-8u91-linux-x64.tar.gz -C ~/app/

配置环境变量

1
2
3
4
5
vim ~/.bash_profile 

# 写入
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH

在任意目录输入 java -version 没问题,那么环境就搭建好了

1
2
3
4
[hadoop@hadoop000 app]$ java -version 
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

安装 Scala

1
tar -zxvf scala-2.11.8.tgz -C ~/app/
1
2
export SCALA_HOME=/home/hadoop/app/scala-2.11.8
export PATH=$SCALA_HOME/bin:$PATH

在任意目录输入 scala 没问题,那么环境就搭建好了

搭建 Hadoop

1
tar -zxvf hadoop-2.6.0-cdh5.7.0.tar.gz -C ~/app/

配置环境变量

1
2
3
4
5
6
7
8
vim ~/.bash_profile 

# 写入
export HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# 保存后执行
source ~/.bash_profile

切换目录到

1
2
cd $HADOOP_HOME
cd etc/hadoop/

1
2
3
4
5
6
7
vim hadoop-env.sh 

# 注销掉原来的
# export JAVA_HOME=${JAVA_HOME}

# 根据实际情况新写入下面的部分
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_91
1
2
3
4
5
6
7
8
9
 vim core-site.xml 

# configuration 配置如下所示
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop000:8020</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
vim hdfs-site.xml 

# 配置如下所示
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadoop/app/tmp/dfs/name</value> # /home/hadoop/app/tmp 目录不存在需要新建
</property>

<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadoop/app/tmp/dfs/data</value>
</property>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
cp mapred-site.xml.template mapred-site.xml
vim mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
1
2
3
4
5
6
7
8
9
10
vim yarn-site.xml 

<configuration>

<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

切换到 hadoop 安装环境目录下的 bin 下,进行 hdfs 的格式化

1
2
cd ~/app/hadoop-2.6.0-cdh5.7.0/bin/
./hadoop namenode -format

如果出现 common.Storage: Storage directory /home/hadoop/app/tmp/dfs/name has been successfully formatted. 则表示格式化成功。切换到 /home/hadoop/app/tmp 目录就可以看到 dfs/name/current目录层级结构了。

启动 hdfs

1
2
cd ~/app/hadoop-2.6.0-cdh5.7.0/sbin/
./start-dfs.sh

若能完全执行,则表示没问题,能启动。
在命令行中 输入 jps 验证,如果有 SecondaryNameNode DataNode NameNode 就可以 ( 第一次启动的时候没有 NameNode 后来在 hosts 中加入 192.168.11.111 hadoop000 映射就有了 )

1
2
3
4
5
[hadoop@hadoop000 sbin]$ jps
6240 SecondaryNameNode
6371 Jps
6073 DataNode
5946 NameNode

新建测试 test 目录

1
2
3
4
hadoop fs -mkdir /test

# 然后在使用下面命令查看是否有新建的 test 目录
hadoop fs -ls /

传入文件测试

1
2
3
4
5
6
7
8
# 将文件 stop-yarn.cmd 传到 hdaoop hdfs 的根目录中去
hadoop fs -put stop-yarn.cmd /

# 查看是否有新传入的文件
hadoop fs -ls /

# 读取上传文件的内容
hadoop fs -text /stop-yarn.cmd

此时hdfs 功能没问题,我们可以在浏览器中输入 http://192.168.11.111:50070 192.168.11.111 是服务器的 ip。可以在 导航中 Utilities 下 Browse the file system 中查看到当前的文件。

接下来启动 yarn

1
2
cd /home/hadoop/app/hadoop-2.6.0-cdh5.7.0/sbin
./start-yarn.sh

再次执行 jps 如果 ResourceManager 和 NodeManager 都有,那就没问题

1
2
3
4
5
6
7
[hadoop@hadoop000 sbin]$ jps
7088 ResourceManager
6240 SecondaryNameNode
7379 NodeManager
7524 Jps
6073 DataNode
5946 NameNode

使用浏览器打开 http://192.168.11.111:8088 就可以看到有一个活跃的节点,那就说明整个 Hadoop 环境就搭建完成了。

搭建 Maven

1
2
3
4
5
6
7
8
9
tar -zxvf apache-maven-3.3.9-bin.tar.gz -C ~/app/

# 加入环境变量
export MAVEN_HOME=/home/hadoop/app/apache-maven-3.3.9
export PATH=$MAVEN_HOME/bin:$PATH

# 保存后
source ~/.bash_profile
echo $MAVEN_HOME # 能输出就没问题

修改 maven 的配置文件,新建 ~/maven_repository 目录

1
2
3
4
5
6
mkdir ~/maven_repository
cd /home/hadoop/app/apache-maven-3.3.9/conf
vim settings.xml

# 将其中的 <localRepository>/path/to/local/repo</localRepository> 改为
<localRepository>~/maven_repository</localRepository>

在命令行中输入 mvn 若有东西输出则表示没问题

安装 Python3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
tar -zxvf Python-3.6.8.tgz  # 直接解压到本地

# 安装 Python 所需依赖包
sudo yum -y install zlib-devel zip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel

# 创建 Python3 安装路径
mkdir ~/app/python3

# 编译
cd /home/hadoop/software/Python-3.6.8
./configure --prefix=/home/hadoop/app/python3

# 安装
make && make install

# 加入环境变量
vim ~/.bash_profile

# 写入
export PATH=/home/hadoop/app/python3/bin:$PATH

# 更新
source ~/.bash_profile

# 验证, 输入 python3 能出来交互式命令行,那就没问题了
[hadoop@hadoop000 bin]$ python3
Python 3.6.8 (default, Feb 23 2019, 02:01:55)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.

安装 Spark

1
2
3
4
tar -zxvf spark-2.3.0.tgz 

# 编译
./dev/make-distribution.sh --name 2.6.0-cdh5.7.0 --tgz -Pyarn -Phadoop-2.6 -Phive -Phive-thriftserver -Dhdaoop.version=2.6.0-cdh5.7.0

编译的时候失败了三次,因为网络的问题。最后将 maven 的中心仓库地址改为阿里云才成功。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<mirrors>
<!-- 阿里云仓库 -->
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/repositories/central/</url>
</mirror>

<!-- 中央仓库1 -->
<mirror>
<id>repo1</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo1.maven.org/maven2/</url>
</mirror>

<!-- 中央仓库2 -->
<mirror>
<id>repo2</id>
<mirrorOf>central</mirrorOf>
<name>Human Readable Name for this Mirror.</name>
<url>http://repo2.maven.org/maven2/</url>
</mirror>
</mirrors>

编译完成后会有一个 spark-2.3.0-bin-2.6.0-cdh5.7.0.tgz 的文件。spark-2.3.0 是版本,2.6.0-cdh5.7.0 是我们设置的名称。

1
2
3
4
5
6
7
8
# 解压刚才编译的文件
tar -zxvf spark-2.3.0-bin-2.6.0-cdh5.7.0.tgz -C ~/app/

# 测试
cd /home/hadoop/app/spark-2.3.0-bin-2.6.0-cdh5.7.0/bin

# 如果能启动成功那就没问题了。同时我们也可以在浏览器上进行查看
http://192.168.11.111:4040/jobs/